part of '../writer.dart';

/// 有id的对象依然是对象，只不过多了根据id来寻找、查找等方法
abstract class IdentityWriter<T extends IdentityOld>
    implements RawableWriter<T> {
  /// 放置对象（关键操作）
  /// 如果没有重复id，则加入新对象
  /// 如果已存在，则先移除原来的对象
  @override
  void input(T object);

  /// 有时候是需要允许不存在的情况发生的
  T? findOne(String id);

  /// 根据id寻找或操作对象，如果找不到则必然报错
  /// 因为既然能够获取id，则说明id一般来说是存在的，如果不存在，必然是开发的时候没有处理好逻辑
  T getOne(String id);
  void deleteOne(String id);
}
